package org.openstack.api.sample;

import org.openstack4j.model.telemetry.MeterSample;
import org.openstack4j.model.telemetry.Sample;
import org.openstack4j.model.telemetry.SampleCriteria;

import java.util.List;

/**
 * Sample每个采集时间点上meter对应的值
 * Created by jiyun on 2017/8/28.
 */
public interface SampleService {

    /**
     * 获取所有监控指标的监控值
     *
     * @return 监控数据列表
     */
    List<? extends Sample> getSampleList();

    /**
     * 通过Sample ID获取Sample实例
     *
     * @param sampleId Sample ID
     * @return Sample 实例
     */
    Sample getSampleById(String sampleId);

    /**
     * 通过查询条件查询
     * 如：按时间区间、资源ID、ProjectId等。
     *
     * @param criteria 查询条件
     * @return 监控值实例
     */
    List<? extends Sample> querySamples(SampleCriteria criteria);

    /**
     * 指定监控指标的条件查询
     *
     * @param meterName 监控指标名称
     * @param criteria  查询条件
     * @return 监控值实例
     */
    List<? extends MeterSample> querySamples(String meterName, SampleCriteria criteria);
}
